function quick(arr, start, end) {

    start = (start === undefined) ? 0 : start;
    end = (end === undefined) ? (arr.length - 1) : end;
    //设定第一个点为标量点
    var pivot = arr[start];
    var i = start,
        j = end;
    while (i < j) {
        //从右开始往左走,找到第一个小于标量的
        while (arr[j] > pivot && j > i) {
            j--;
        }
        //从右开始往左走,找到第一个大于标量的
        while (arr[i] <= pivot && i < j) {
            i++;
        }
        //交换位置
        var temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
    arr[start] = arr[j];
    arr[j] = pivot;
    //继续遍历左半部分
    if (start < (j - 1)) quick(arr, start, j - 1);
    //继续遍历右半部分
    if (end > j + 1) quick(arr, j + 1, end);
}




var arr = [6, 324, 56, 576, -9, 787, 8, 789, -1, 54, 6, 57, 8, 18, 21, 213, 4, 30000, 7, 68, 79, 1, 213, 12312];
console.log("排序前");
console.log(arr.join(','));
console.log("--------------------");
quick(arr);
console.log("排序后");
console.log(arr.join(','));
